package com.cs2.volunteerpostbackend.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cs2.volunteerpostbackend.po.Moment;
import com.cs2.volunteerpostbackend.web.dto.moment.MomentUserVO;
import com.cs2.volunteerpostbackend.web.dto.moment.ImageVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Creation实体对应的Mapper接口
 * 继承MyBatis-Plus的BaseMapper接口，获得基本的CRUD操作能力
 * 无需编写XML映射文件，即可实现对数据库表的常用操作
 */
public interface MomentMapper extends BaseMapper<Moment> {
    // 接口继承BaseMapper<Creation>后，自动拥有以下常用方法：
    // insert(T entity) - 插入一条记录
    // deleteById(Serializable id) - 根据ID删除记录
    // updateById(T entity) - 根据ID更新记录
    // selectById(Serializable id) - 根据ID查询记录
    // selectList(Wrapper<T> queryWrapper) - 根据条件查询多条记录
    // 等一系列基础数据库操作方法
    // 如需自定义复杂查询，可在此接口中定义方法并在XML映射文件中实现
    
    /**
     * 分页查询动态列表（包含用户信息）
     * @param page 分页参数
     * @param userId 当前查看动态的用户ID
     * @param type 查询类型 0-查看公开动态 1-只查看自己的动态
     * @return 分页结果
     */
    IPage<MomentUserVO> selectMomentsWithUserInfo(Page<MomentUserVO> page, @Param("userId") String userId, @Param("type") int type);
    
    /**
     * 根据动态ID列表查询关联的图片信息
     * @param momentIds 动态ID列表
     * @return 图片信息列表
     */
    List<ImageVO> selectImagesByMomentIds(@Param("momentIds") List<String> momentIds);
}